package com.aegis.demo;

import com.aegis.core.model.AegisLoginInfo;
import com.aegis.core.model.AegisSession;
import com.aegis.core.utils.AegisUserUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.*;

import java.util.Arrays;
import java.util.List;
import java.util.UUID;

/**
 * @Author wuweixin
 *
 * @Version 1.0
 * @Descritube 演示
 */
@Slf4j
@RestController
@RequestMapping("/auth")
public class UserController {


    /**
     * 模拟登录
     *
     * @param roles 这里是为了方便模拟展示，正常开发不可能这样，应该是数据库中查到用户数据后写入
     * @return
     */
    @GetMapping("/login")
    public AegisLoginInfo login(@RequestParam("roles") List<String> roles) {
        //...这里是判断用户账户密码是否匹配，根据自己业务完成，这里不再模拟

        //验证账户密码匹配后，将用户id，登录的账户填入
//        String userId = UUID.randomUUID().toString();
        String userId = "1";
        String account = "account_" + UUID.randomUUID();
        //登录
        AegisLoginInfo login = AegisUserUtil.login(userId, account);
        //开始写入用户所属权限组
        //注意，正常开发流程中，这里应该是数据库查到用户角色后，在这里写入
        AegisUserUtil.setUserGroup(userId, roles);
        return login;
    }


    /**
     * 获得当前登录的用户信息-超管/普通用户
     *
     * @return
     */
    @GetMapping("/user/me/profile")
    public AegisSession getLoginUserInfo() {
        return AegisUserUtil.getLoginUserInfo();
    }

    /**
     * 获得某个用户的信息-超管、普通管理员权限
     *
     * @return
     */
    @GetMapping("/user/{userId}/profile")
    public String queryUserProfile(@PathVariable("userId") String userId) {
        log.info("查询用户 {} 信息", userId);
        return userId;
    }

    /**
     * 删除某个用户的信息-超管权限
     *
     * @return
     */
    @DeleteMapping("/user/{userId}/profile")
    public String deleteUserProfile(@PathVariable("userId") String userId) {
        log.info("删除用户 {} 信息", userId);
        return userId;
    }


}
